﻿using Coravel;
using Coravel.Invocable;

namespace SVMS
{
    /*
     添加后台任务步骤
     1. 新增一个YourTaskJob类，实现IInvocable接口
     2. 在AddTaskJobs方法中添加YourTaskJob
     3. 在UseTaskJobs方法中添加作业执行计划
     */

    // 后台任务类
    internal static class AppJobs
    {
        // 添加后台任务
        internal static void AddTaskJobs(this IServiceCollection services)
        {
            // 添加任务
            services.AddScheduler();
            services.AddTransient<ImportTaskJob>();
            // 在此处添加其他TaskJob
        }

        // 启用后台任务计划
        internal static void UseTaskJobs(this WebApplication app)
        {
            app.Services.UseScheduler(scheduler =>
            {
                scheduler.Schedule<ImportTaskJob>().EveryFiveSeconds();
                // 在此处添加其他任务作业
            });
        }
    }

    // 导入后台任务作业类
    internal class ImportTaskJob : IInvocable
    {
        // 调用导入方法
        public Task Invoke() => ImportHelper.ExecuteAsync();
    }
}